package com.iengine.services.api.command;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;


/**
 * @author rtygbwwwerr
 * WebApi命令处理基类
 *  
 */
public abstract class AbstractApiCommand implements ICommand {
	
    protected final static String DEF_DATE_FORMAT = "yyyy-MM-dd";
    
    /**
     * constructor
     */
    public AbstractApiCommand() {
    }
    
    /**
     * 获取格式化后的 result，共两种类型：
     * 1.CommandPhoneApi
     * 2.CommandWebApi
     * 
     * @param params 请求参数
     * @param result 语义解析结果
     * @return 格式化后的 result
     */
    protected abstract Map getFormatResult(Map params);
    
    
    @Override
    public final Map excute(Map params) {
    	getFormatResult(params);
        return params;
    }

    
    /**
     * @param date 日期对象
     * @param format 格式化字符串，例如：yyyy-MM-dd
     * @return 格式化后的日期字符串
     *         如：2013-04-23
     */
    protected String getDateString(Date date, String format) {
        
        final DateFormat dateFormat = new SimpleDateFormat(DEF_DATE_FORMAT);
        Date dateSrc = date;
        if(null == dateSrc) {
            dateSrc = new Date();
        }
        
        return dateFormat.format(dateSrc);
    }
    
    /**
     * 以默认格式yyyy-MM-dd进行格式化处理
     * @param date 日期对象
     * @return 格式化后的日期字符串
     *         如：2013-04-23
     */
    protected String getDateString(Date date) {
        return getDateString(date, DEF_DATE_FORMAT);
    }
    
    public <T> T getValue(Object obj,T result){
    	if(null != obj){
    		return (T)obj;
    	}else{
    		return result;
    	}
    }

}
